package com.framework.bdf4j.comm.util;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.framework.bdf4j.comm.SpringContextHolder;
import com.framework.bdf4j.sysadm.entity.SysDictItem;
import com.framework.bdf4j.sysadm.service.SysDictItemService;

import cn.hutool.core.collection.CollectionUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * <b>文件名： </b>DictUtil.java<br/>
 * <b>类描述： </b>数据字典操作辅助类<br/>
 */
@Slf4j
public class DictUtil {

    private static SysDictItemService sysDictItemService = SpringContextHolder.getBean("sysDictItemServiceImpl");

    /**
     * 得到数据字典代码相对应的文字
     * 
     * @param keyCode
     *            大类代码
     * @param dictItemCode
     *            小类代码
     * @return 小类对应的文字
     */
    public static String getItemName(String keyCode, String dictItemCode) {
        String itemName = "";
        List<SysDictItem> list = getCodeInfo(keyCode);
        if (CollectionUtil.isNotEmpty(list)) {
            Iterator<SysDictItem> it = list.iterator();
            while (it.hasNext()) {
                SysDictItem db = it.next();
                if (db.getValue().equals(dictItemCode)) {
                    itemName = db.getLabel();
                    break;
                }
            }
        }
        return itemName;
    }

    /**
     * 根据数据字典大类代码得到小类信息
     * 
     * @param keyCode
     *            大类代码
     * @return 小类信息列表
     */
    @SuppressWarnings("unchecked")
    public static List<SysDictItem> getCodeInfo(String keyCode) {
        Object obj = null;
        try {
            Map<String, List<SysDictItem>> codeMap = sysDictItemService.selectDictionaryInfo();
            obj = codeMap.get(keyCode);
        } catch (Exception e) {
            log.error(e.getMessage());
        }

        return obj != null ? (List<SysDictItem>)obj : null;
    }
}
